﻿using System.Collections.Generic;
using Gameplay.PVE.Utils;
using UnityEngine;
using Yoozoo.Mars.Got.SpriteAnim;

namespace Yoozoo.Gameplay.RTS
{
    /// <summary>
    /// 小兵行为数据
    /// </summary>
    public class ChildBehaviourData
    {
        public int count;

        /// <summary>
        /// 是否有效
        /// </summary>
        public List<bool> valid;
        
        /// <summary>
        /// 在方阵中的索引
        /// </summary>
        public List<int> index;

        public List<Vector3> position;

        public List<Vector3> forward;

        public List<int> direction;
        
        public List<Vector3> targetForward;

        public List<int> targetDirection;
        
        
        //序列帧相关
        public List<AnimSprite> animSprite;
        public List<AnimSprite> shadowSprite;
        public List<float> spriteOriginScale;
        public List<float> shadowOriginScale;
        public List<int> animationIndex;
        public List<float> animationSpeed;
        public List<float> spriteYOffset;
        public List<Vector3> shadowOffset;
        
        
        
        //通用
        public List<int> state;

        public List<int> subState;
        
        public List<int> soldierType;

        //小兵变阵相关

        /// <summary>
        /// 小兵变阵起始位置
        /// </summary>
        public List<Vector3> startMovePosition;
        
        /// <summary>
        /// 小兵变阵目标位置
        /// </summary>
        public List<Vector3> targetMovePosition;
        
        /// <summary>
        /// 小兵变阵目标位置
        /// </summary>
        public List<Vector3> childTargetPosition;
        
        /// <summary>
        /// 变阵所需时间
        /// </summary>
        public List<float> moveNeedTime;

        /// <summary>
        /// 开始移动的时间
        /// </summary>
        public List<float> moveStartTime;
        
        /// <summary>
        /// 开始旋转的时间
        /// </summary>
        public List<float> rotateStartTime;
        
        /// <summary>
        /// 是否处于变阵状态
        /// </summary>
        public List<bool> InAdjustPositionState;
        
        public List<bool> IsFirstChange;

        //战斗
        /// <summary>
        /// 战斗某阶段开始时间
        /// </summary>
        public List<float> stageStartTime;

        /// <summary>
        /// 指令集配表
        /// </summary>
        public List<SoldierAttackActionConfig> actionConfigs;

        /// <summary>
        /// 当前执行的指令集id
        /// </summary>
        public List<int> instructionSetIndex;

        /// <summary>
        /// 执行行动的等待时间，可以与moveStartTime合并
        /// </summary>
        public List<float> waitTime;

        /// <summary>
        /// 指令集里的行动id
        /// </summary>
        public List<int> actionIndex;
        
      
        public List<Vector3> transformOffset;

    }
}
